package com.liushuyv.calculator.ui;
import java.util.*;

/*
 **@Author:刘淑钰
 **Created on 2020/12/15
 */

class  Student{
    private String no;
    private String name;

    public Student() {
    }

    public Student(String no, String name) {
        this.no = no;
        this.name = name;
    }

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class AnotherTest {

    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
    //父类型引用指向子类型对象，ArrayList
        Student stu1 = new Student();
        Student stu2=new Student();
        list.add(stu1);
        list.add(stu1);//同一个对象添加两次
        list.add(stu2);
        System.out.println(list.size());//实际存储对象的空间数，动态分配数据，数的是添加的次数，所以为3
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getNo());
        }//for循环能力更强 foreach只能从第一号到第0号，删除语句不能写到循环中去，因为size的长度一直在变

        int j=0;//如果想从第一个输出**1
        for(Student s:list){
//            System.out.println(s.getNo());
            if(j>=1)System.out.println(s.getNo());//虽然可以实现，但是还是从0开始找**2
        }
            //foreach循环 前跟存储单元类型类型：后跟被枚举，循环的，会自动输出下一个

        //list删除
        list.remove(0);
        list.remove(stu1);//object是所有类型的祖先函数，提高了通用性
        Student stu3 = new Student();
        Map<String,Student> map=new HashMap<>();//HashMap是它自己的一个子类型
        map.put("a",stu1);
        map.put("b",stu2);
        map.put("c",stu3);
        map.put("d",stu3);//它的v只会保存一个stu3

//        map.get("b").getNo();//得到b对应的类
        for (String key : map.keySet()) {
            //循环keyset里面的key,输出里面的值
           System.out.println(map.get("b").getNo());
        }

        Set<Student> set = new HashSet<>();
        set.add(stu1);
        set.add(stu1);
        set.add(stu2);
        set.add(stu3);
        System.out.println(set.size());//size的值为3，里面元素不相同
        for (Student student : set) {
            System.out.println(student.getNo());
        }

        //如何利用set的性质实现list的去重
        Set<Student> sets = new HashSet<>();
        for (Student stu : list) {
            sets.add(stu);
        }


    }
}
